From 313b6f39a62fae3bbbd6d55993a2c3cfa03e3ba9 Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Mon, 27 Jul 2009 15:39:28 -0500 Subject: [PATCH] _gdk_window_impl_new() on directfb --- gdk/directfb/gdkwindow-directfb.c | 159 +++++++++++------------------- 1 file changed, 59 insertions(+), 100 deletions(-) diff --git a/gdk/directfb/gdkwindow-directfb.c b/gdk/directfb/gdkwindow-directfb.c index b7795f8ea4..42196f7323 100644 --- a/gdk/directfb/gdkwindow-directfb.c +++ b/gdk/directfb/gdkwindow-directfb.c @@ -351,50 +351,35 @@ _gdk_windowing_window_init (void) } - -GdkWindow * -gdk_directfb_window_new (GdkWindow *parent, - GdkWindowAttr *attributes, - gint attributes_mask, - DFBWindowCapabilities window_caps, - DFBWindowOptions window_options, - DFBSurfaceCapabilities surface_caps) +void +_gdk_window_impl_new (GdkWindow *window, + GdkWindow *real_parent, + GdkScreen *screen, + GdkVisual *visual, + GdkEventMask event_mask, + GdkWindowAttr *attributes, + gint attributes_mask) { - GdkWindow *window; GdkWindowObject *private; GdkWindowObject *parent_private; GdkWindowImplDirectFB *impl; GdkWindowImplDirectFB *parent_impl; - GdkVisual *visual; DFBWindowDescription desc; - gint x, y; - - g_return_val_if_fail (attributes != NULL, NULL); - D_DEBUG_AT( GDKDFB_Window, "%s( %p )\n", __FUNCTION__, parent ); - - if (!parent || attributes->window_type != GDK_WINDOW_CHILD) - parent = _gdk_parent_root; + impl = g_object_new (_gdk_window_impl_get_type (), NULL); + impl->drawable.wrapper = GDK_DRAWABLE (window); + impl->gdkWindow = window; - window = g_object_new (GDK_TYPE_WINDOW, NULL); private = GDK_WINDOW_OBJECT (window); - private->impl = g_object_new (_gdk_window_impl_get_type (), NULL); - - parent_private = GDK_WINDOW_OBJECT (parent); - parent_impl = GDK_WINDOW_IMPL_DIRECTFB (parent_private->impl); - private->parent = parent_private; + private->impl = (GdkDrawable *)impl; - x = (attributes_mask & GDK_WA_X) ? attributes->x : 0; - y = (attributes_mask & GDK_WA_Y) ? attributes->y : 0; + private->x = (attributes_mask & GDK_WA_X) ? attributes->x : 0; + private->y = (attributes_mask & GDK_WA_Y) ? attributes->y : 0; - gdk_window_set_events (window, attributes->event_mask | GDK_STRUCTURE_MASK); - - impl = GDK_WINDOW_IMPL_DIRECTFB (private->impl); - impl->drawable.wrapper = GDK_DRAWABLE (window); - impl->gdkWindow = window; + parent_private = private->parent; + parent_impl = GDK_WINDOW_IMPL_DIRECTFB (parent_private->impl); - private->x = x; - private->y = y; + private->parent = parent_private; _gdk_directfb_calc_abs (window); @@ -405,24 +390,20 @@ gdk_directfb_window_new (GdkWindow *parent, desc.flags = 0; - if (attributes_mask & GDK_WA_VISUAL) - visual = attributes->visual; - else - visual = gdk_drawable_get_visual (parent); - switch (attributes->wclass) { case GDK_INPUT_OUTPUT: private->input_only = FALSE; desc.flags |= DWDESC_PIXELFORMAT; - desc.pixelformat = ((GdkVisualDirectFB *) visual)->format; + desc.pixelformat = ((GdkVisualDirectFB *)visual)->format; if (DFB_PIXELFORMAT_HAS_ALPHA (desc.pixelformat)) { desc.flags |= DWDESC_CAPS; desc.caps = DWCAPS_ALPHACHANNEL; } + break; case GDK_INPUT_ONLY: @@ -432,9 +413,9 @@ gdk_directfb_window_new (GdkWindow *parent, break; default: - g_warning ("gdk_window_new: unsupported window class\n"); + g_warning ("_gdk_window_impl_new: unsupported window class\n"); _gdk_window_destroy (window, FALSE); - return NULL; + return; } switch (private->window_type) @@ -442,59 +423,50 @@ gdk_directfb_window_new (GdkWindow *parent, case GDK_WINDOW_TOPLEVEL: case GDK_WINDOW_DIALOG: case GDK_WINDOW_TEMP: - desc.flags |= ( DWDESC_WIDTH | DWDESC_HEIGHT | - DWDESC_POSX | DWDESC_POSY ); - desc.posx = x; - desc.posy = y; + desc.flags |= (DWDESC_WIDTH | DWDESC_HEIGHT | + DWDESC_POSX | DWDESC_POSY); + desc.posx = private->x; + desc.posy = private->y; desc.width = impl->drawable.width; desc.height = impl->drawable.height; -#if 0 - if (window_caps) + + if (!create_directfb_window (impl, &desc, DWOP_NONE)) { - if (! (desc.flags & DWDESC_CAPS)) - { - desc.flags |= DWDESC_CAPS; - desc.caps = DWCAPS_NONE; - } + g_assert (0); + _gdk_window_destroy (window, FALSE); - desc.caps |= window_caps; + return; } - if (surface_caps) + if (desc.caps != DWCAPS_INPUTONLY) { - desc.flags |= DWDESC_SURFACE_CAPS; - desc.surface_caps = surface_caps; + impl->window->SetOpacity (impl->window, 0x00); } -#endif - if (!create_directfb_window (impl, &desc, window_options)) - { - g_assert(0); - _gdk_window_destroy (window, FALSE); - return NULL; - } - if( desc.caps != DWCAPS_INPUTONLY ) - impl->window->SetOpacity(impl->window, 0x00 ); break; case GDK_WINDOW_CHILD: - impl->window=NULL; + impl->window = NULL; + if (!private->input_only && parent_impl->drawable.surface) { - - DFBRectangle rect = - { x, y, impl->drawable.width, impl->drawable.height }; + DFBRectangle rect = { private->x, + private->y, + impl->drawable.width, + impl->drawable.height }; parent_impl->drawable.surface->GetSubSurface (parent_impl->drawable.surface, &rect, &impl->drawable.surface); } + break; default: - g_warning ("gdk_window_new: unsupported window type: %d", + g_warning ("_gdk_window_impl_new: unsupported window type: %d", private->window_type); _gdk_window_destroy (window, FALSE); - return NULL; + + return; } if (impl->drawable.surface) @@ -502,38 +474,39 @@ gdk_directfb_window_new (GdkWindow *parent, GdkColormap *colormap; impl->drawable.surface->GetPixelFormat (impl->drawable.surface, - &impl->drawable.format); + &impl->drawable.format); - private->depth = DFB_BITS_PER_PIXEL(impl->drawable.format); + private->depth = DFB_BITS_PER_PIXEL (impl->drawable.format); if ((attributes_mask & GDK_WA_COLORMAP) && attributes->colormap) - { - colormap = attributes->colormap; - } + { + colormap = attributes->colormap; + } else - { - if (gdk_visual_get_system () == visual) - colormap = gdk_colormap_get_system (); - else - colormap =gdk_drawable_get_colormap (parent); - } + { + if (gdk_visual_get_system () == visual) + colormap = gdk_colormap_get_system (); + else + colormap = gdk_colormap_new (visual, FALSE); + } gdk_drawable_set_colormap (GDK_DRAWABLE (window), colormap); } else { impl->drawable.format = ((GdkVisualDirectFB *)visual)->format; - private->depth = visual->depth; + private->depth = visual->depth; } - gdk_window_set_cursor (window, ((attributes_mask & GDK_WA_CURSOR) ? - (attributes->cursor) : NULL)); + gdk_window_set_cursor (window, + ((attributes_mask & GDK_WA_CURSOR) ? + (attributes->cursor) : NULL)); if (parent_private) parent_private->children = g_list_prepend (parent_private->children, window); - /* we hold a reference count on ourselves */ + /* we hold a reference count on ourself */ g_object_ref (window); if (impl->window) @@ -545,21 +518,6 @@ gdk_directfb_window_new (GdkWindow *parent, if (attributes_mask & GDK_WA_TYPE_HINT) gdk_window_set_type_hint (window, attributes->type_hint); - - return window; -} - -GdkWindow * -_gdk_window_new (GdkWindow *parent, - GdkWindowAttr *attributes, - gint attributes_mask) -{ - g_return_val_if_fail (attributes != NULL, NULL); - - D_DEBUG_AT( GDKDFB_Window, "%s( %p )\n", __FUNCTION__, parent ); - - return gdk_directfb_window_new (parent, attributes, attributes_mask, - DWCAPS_NONE, DWOP_NONE, DSCAPS_NONE); } void @@ -2827,6 +2785,7 @@ _gdk_windowing_window_get_next_serial (GdkDisplay *display) GdkRegion * _gdk_windowing_window_get_input_shape (GdkWindow *window) { + return NULL; } void -- 2.30.2